package com.todod.base.module.infra.controller.admin.baseofficialletter.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 公函 Response VO")
@Data
@ExcelIgnoreUnannotated
public class BaseOfficialLetterRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19109")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "主题", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("主题")
    private String theme;

    @Schema(description = "发起部门id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("发起部门id")
    private Long deptId;

    @Schema(description = "开课日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate startDate;

    @Schema(description = "结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate endDate;

    @Schema(description = "附件(97:有/98:无)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("附件(97:有/98:无)")
    private Integer fileExists;

    @Schema(description = "公函内容", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("公函内容")
    private String content;

    @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "创建时间（发起时间）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间（发起时间）")
    private LocalDateTime createTime;

    @Schema(description = "发布时间（审批通过时间）")
    @ExcelProperty("发布时间（审批通过时间）")
    private LocalDateTime publishTime;

    @Schema(description = "状态(草稿:0；审核中:1；审核通过:2；审核驳回:3)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("状态(草稿:0；审核中:1；审核通过:2；审核驳回:3)")
    private Integer status;

    @Schema(description = "状态(未查看:0；已查看:1)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("状态(未查看:0；已查看:1)")
    private Integer state;

    @Schema(description = "公函管理id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("公函管理id")
    private Long officialLetterId;

    @Schema(description = "首次查看时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("首次查看时间")
    private LocalDateTime firstViewTime;

    @Schema(description = "末次查看时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("末次查看时间")
    private LocalDateTime lastViewTime;

}